1. Field of the Invention
The invention relates generally to the field of digital data processing systems, and more specifically to microcoded systems for controlling a central processing system in execution of program instructions. In particular, the invention provides a system for the sequential serial decoding of a microinstruction to control successive phases in execution of a microinstruction, to avoid the necessity of requiring each microinstruction to explicitly control every function of the processor at one time. Since the microinstructions are successively decoded at the various processing stages to control those stages, each microinstruction will require fewer binary control signals, thereby reducing the number of microwords required as well as the length of each microinstruction.
2. Description of the Prior Art
A digital data processing system generally includes three basic elements; namely, a memory element, an input/output element, and a processor element, all interconnected by one or more buses. The memory element stores data in addressable storage locations. This data includes both operands and instructions for processing the operands. The processor element causes data to be transferred, or fetched, to it from the memory element, interprets the incoming data as either instructions or operands, and processes the operands in accordance with the instruction. The results are then stored in addressed locations in the memory element. An input/output element also communicates with the memory element in order to transfer data into the system and to obtain the processed data from it. Units comprising the input/output element normally operate in accordance with control information supplied to it by the processor element. The input/output units may include, for example, printers, teletypewriters or keyboards and video display terminals, and may also include secondary data storage devices such as disk drives or tape drives.
Processors process programs by executing a series or program instructions. Each program instruction includes an operation code which identifies the operation to be performed. In addition, an instruction may include one or more operands which are to be used by the processor in executing the instruction. Each instruction, however, requires the processor to perform one or more steps to execute the operation. In the past, the control of the processor in executing these steps has been achieved in two ways. First, control has been achieved by combinatorial logic. The operation code portion of the instruction enables certain data paths in the processor to be established, as well as a combinatorial logic control path. During each of a plurality of processing cycles, the combinatorial logic control path determines the results of processing in the previous processing cycle and transmits control signals to the data path to enable it to perform a processing operation.
The second control arrangement is by way of microinstructions. Microinstructions are entirely analogous to program instructions or "macroinstructions" which are fetched from memory, and consists of a series of control words. Each macroinstruction operation code identifies one series of microinstructions. During each processing cycle, the processor enables the successive control words in the series associated with the macroinstruction being processed to be retrieved and transmitted to the data path. Each microinstruction contains binary signals which control all of the controllable functions in the data path during that processing cycle. The results of previous processing cycles, and various other conditions in the execution of the instruction, are taken into account by branching within the microinstruction series. The processor generates branching or condition signals which enable the different portions of the microinstruction series to be used depending on conditions which are sensed during processing of the instruction.
Problems inhere in both types of control arrangements. With the combinatorial logic control path, the control path is hardwired into the processor, and a substantial redesign effort is required to change the control path. If a design error is detected in the combinatorial logic control path during development or after a processor has been manufactured or sold, correction thus can be an expensive and time-consuming process.
A combinatorial logic control system can be faster than microinstruction-controlled systems, but the use of microinstructions can make correction of design errors in the control system far simpler. All the designer need do is revise the microinstruction series if an error is detected, generate a new microinstruction control store, which can be in a field-programmable read-only memory, and replace the old control store with a new one. However, generally microcode control arrangements require a very long microword in which digital control signals are required for each function in the data path, as well as a connection from the control store to the circuit in the data path which performs that function.
Because of the ease in finding and correcting errors, the use of microinstructions to control a processor's data paths has become the most common control system used today. However, because of the number of digital control signals required in the microinstructions, the number of connections between the microinstruction control store and the data path can be substantial.